﻿using SistemaAcademico.Util;
using SistemaAcademicoTCCDAO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SistemaAcademico.Pages
{
    public partial class NewDegreeCourse : System.Web.UI.Page
    {
        #region PAGE EVENTS
        protected void Page_Load(object sender, EventArgs e)
        {
            btnAdd.ServerClick += btnAdd_ServerClick;
            btnRem.ServerClick += btnRem_ServerClick;
        }

        void btnRem_ServerClick(object sender, EventArgs e)
        {
            Transfer.TransferListItem(ref lstDisciplinasNoCurso, ref lstDisciplinasDisponiveis);
        }

        void btnAdd_ServerClick(object sender, EventArgs e)
        {
            Transfer.TransferListItem(ref lstDisciplinasDisponiveis, ref lstDisciplinasNoCurso);
        }

        protected void btnContinuar_Click(object sender, EventArgs e)
        {
            if (Valida())
            {
                try
                {
                    SATCCEntities container = new SATCCEntities();
                    CursoSet curso = new CursoSet();

                    curso.nmCurso = txtNomeDoCurso.Text;
                    curso.dsDescricao = txtDescCurso.Text;
                    curso.Professor_Id = Convert.ToInt32(ddlCdCoordenador.SelectedValue);

                    int idProf = Convert.ToInt32(ddlCdCoordenador.SelectedValue);

                    var prof = container.ProfessorSet.Where(p => p.Id == idProf).FirstOrDefault();

                    curso.ProfessorSet = prof;

                    foreach (ListItem item in lstDisciplinasNoCurso.Items)
                    {
                        Int32 materiaId = Convert.ToInt32(item.Value);
                        var materia = container.MateriaSet.Where(m => m.Id == materiaId).First();
                        curso.MateriaSet.Add(materia);
                    }
                    container.CursoSet.AddObject(curso);
                    container.SaveChanges();
                    Response.Redirect("~/Pages/Cursos.aspx");
                }
                catch (Exception)
                {
                    Response.Write("<script>alert('Ocorreu um erro no cadastro! Tente novamente. Se o problema persistir, entre em contato com o suporte.');</script>"); ;
                }
            }
        }
        #endregion

        #region METHODS
        bool Valida()
        {
            if (String.IsNullOrEmpty(txtDescCurso.Text))
                return false;

            if (String.IsNullOrEmpty(txtNomeDoCurso.Text))
                return false;

            return true;


        }
        #endregion
    }
}